Micron Document
██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝


🬧 The NomadNet Encyclopedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

🔍 Search

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Modula-2
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
mwcqModula-2 è un mwcglinguaggio di programmazione mwcwmwdageneral purpose creato e presentato nel mwdq1978cite-ref-rcp72-2-0[2] da mwegNiklaus Wirth. È un'evoluzione di mwewModula (1975), che era stato realizzato solo come prototipo. Il suo principale obiettivo era superare alcuni limiti del mwfaPascal, anch'esso sviluppato da Wirth, specialmente in termini di mwfqmodularità e gestione di programmi complessicite-ref-rcp70-3-0[3].

Tra le caratteristiche principali vi è il concetto di mwgwmodulo, ossia di un'unità logica che incapsula al suo interno dati e procedure, limitandone la visibilità all'esterno. Questo permette una migliore organizzazione del programma (mwhaprogrammazione modulare). I moduli di Modula-2 sono mwhqcompilabili individualmente e poi collegabili tra loro per formare un programma completo. Per l'epoca era una caratteristica notevolecite-ref-rcp70-3-1[3].

Contents

Storia
Note

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Caratteristiche

Essendo un mwjqlinguaggio tipizzato fortemente, come il Pascal, non ammette conversioni implicite fra mwjgtipi di dati diversicite-ref-rcp70-3-2[3].

I tipi di moduli solitamente utilizzati sono "moduli programma", contenenti il corpo principale del mwlaprogramma da mandare in esecuzione, e "moduli libreria", punto di forza del linguaggio, che costituiscono mwlqlibrerie, ossia contengono e forniscono gruppi di funzionalità, generalmente relative a un certo argomento. I moduli libreria a loro volta sono costituiti da "modulo di definizione" e "modulo d'implementazione"; il primo elenca definizioni di mwlgfunzioni, mwlwvariabili e altri oggetti che la libreria rende disponibili, il secondo contiene il mwmacodice che li implementa, compresi eventuali altri elementi a uso interno, non resi disponibili agli altri moduli chiamanticite-ref-4[4].

Il codice Modula-2 è mwngsensibile alle maiuscole, con le parole chiave tutte in maiuscolo. Ogni modulo inizia con il comando MODULE seguito dal suo nome. Poi viene una parte dichiarativa che tipicamente comprende il comando FROM, che specifica quali oggetti importare da altri moduli per utilizzarli; il comando VAR, che definisce nuove variabili di questo modulo; il comando PROCEDURE, che definisce funzioni con eventuali dati di ingresso e uscita, precisamente tipizzati. Gli elementi qui definiti potranno essere o meno resi disponibili per l'uso da parte di altri moduli. Segue la parte esecutiva, contenente le operazioni mwnwstrutturate da svolgere, delimitata dai comandi BEGIN e END. I mwoacommenti sono delimitati da (* *) e nidificabili.cite-ref-5[5].

Oltre alla suddetta organizzazione in moduli, Modula-2 presenta altre caratteristiche avanzate:

• Tra i tipi di dati introduce i mwqapuntatori a procedura, simili ai mwqqpuntatori a funzione, aumentando la flessibilità delle chiamatecite-ref-rcp70-3-3[3].
• Fornisce strumenti di gestione della mwrwprogrammazione concorrente, come mwsaprocessi e mwsqsemafori. Ciò lo rende adatto anche allo sviluppo di mwsgsistemi operativi e mwswapplicazioni in tempo realecite-ref-rcp70-3-4[3].
• Fornisce strumenti per una robusta mwuqgestione degli erroricite-ref-rcp70-3-5[3].

Storia

Modula-2 venne sviluppato da mwwaNiklaus Wirth al mwwqPolitecnico federale di Zurigo (ETH). Nel 1977 Wirth passò un periodo sabbatico allo mwwgXerox Palo Alto Research Center (PARC), dove conobbe il linguaggio Mesa, che aveva una funzionalità analoga ai moduli, ma l'autore ritenne che un discendente del mwxaPascal avrebbe potuto funzionare meglio in tal senso. Al PARC Wirth conobbe anche lo mwxqXerox Alto, che introduceva il rivoluzionario concetto di mwxgworkstation. Con questa ispirazione, all'ETH nel 1978-1980 venne realizzata la workstation mwxwLilith. Il principale incentivo alla progettazione di Modula-2 fu proprio la necessità di un linguaggio semplice e versatile con cui produrre tutto il software per Lilith; in quegli anni il computer e il linguaggio crebbero insiemecite-ref-6[6]. Lilith, dotata di display grafico e mouse, fu completamente sviluppata in Modula-2 e basata su di esso. Wirth la pensò come piattaforma di sviluppo software, ma poi fu anche commercializzata, sebbene con scarso successocite-ref-rcp73-7-0[7].

Negli anni ci sono state molte implementazioni del Modula-2 per molte piattaforme, da quelle commerciali come i compilatori della mwaqLogitech per mwagMS-DOS e mwawCP/M, a quelle mwbaopen source come GNU Modula-2, facente parte del sistema mwbqGNU Compiler Collectioncite-ref-8[8]. Nel 1986 il noto informatico mwcgMartin Odersky realizzò il compilatore mwcwTurbo Modula-2 per la mwdaBorland, ma rimase in mwdqversione alpha e non fu mai pubblicato ufficialmentecite-ref-rcp70-3-6[3]. Una sua caratteristica notevole era la possibilità di compilare come eseguibile normale oppure come mwegm-code, un codice interpretato da un mwewinterprete contenuto nell'eseguibile stessocite-ref-9[9].

I principali dialetti di Modula-2 presero il nome di PIM, sigla del libro di Wirth mwgqProgramming in Modula-2, con varianti da PIM2 a PIM4 corrispondenti alle edizioni. Questo è anche detto Modula-2 "classico" (mwggclassical Modula-2)cite-ref-faq-10-0[10]. Uno standard internazionale del linguaggio è nato solo molti anni dopo la sua introduzione, con lo mwhwstandard ISO/IEC 10514-1:1996, che ha avuto due estensioni nel 1998, di cui una per la mwiaprogrammazione a oggetticite-ref-11[11]. Un'altra variante notevole è la R10, pubblicata intorno al 2010cite-ref-faq-10-1[10].

Modula-2 ha avuto influenza rilevante su diversi linguaggi successivi. Un esempio evidente è mwkgAda, dotato di concetti di modularità e strutture dati similicite-ref-rcp72-2-1[2]. Il concetto di modulo ha avuto diretta influenza anche sul mwlwTurbo Pascal, una celebre implementazione del Pascal, che a partire dalla versione 4.x mette a disposizione le UNIT. Queste strutture analoghe ai moduli hanno esteso significativamente potenza e flessibilità del Turbo Pascalcite-ref-rcp72-2-2[2].

Il successore diretto di Modula-2 è mwnqModula-3 (1989), passando per una variante chiamata Modula-2+ (1984). Questi non vennero sviluppati da Wirth, che invece realizzò mwngOberon (1987) come evoluzione di Modula-2.

Hello world

Esempio di programma mwoqmwogHello world, che fa uso del modulo predefinito mwowInOut per l'mwpainput/output testuale:

MODULE Hello;
FROM InOut IMPORT
WriteString, WriteLn;
BEGIN
WriteString("Hello World!");
WriteLn;
END Hello.

Note

cite-note-11. mwsq(mwsgmwswEN) mwtamwtqCompiler options (The GNU Modula-2 compiler), su mwtggcc.gnu.org.
cite-note-rcp72-22. mwvgmwvwRetro Computer 3,mwwq p. 72.
cite-note-rcp70-33. mw0qmw0gRetro Computer 3,mw1a p. 70.
cite-note-44. mw2amw2qCommodore Gazette 1,mw2w p. 83.
cite-note-55. mw3wmw4aCommodore Gazette 1,mw4g p. 84.
cite-note-66. mw5g(mw5wmw6aEN) mw6qmw6gA Brief History of Modula and Lilith, su mw6wmodula2.org.
cite-note-rcp73-77. mw7wmw8aRetro Computer 3,mw8g p. 73.
cite-note-88. mw9g(mw9wmw-aEN) mw-qmw-gModula-2 Compilers, su mw-wmodula2.net mw-a(archiviato dall'mw-qurl originale il 17 maggio 2012).
cite-note-99. mwaqemwaqiRetro Computer 3,mwaqq p. 71.
cite-note-faq-1010. mwaqo(mwaqsmwaqwEN) mwaq0mwaq4Modula-2 FAQ, su mwaq8arjay.bc.ca mwara(archiviato dall'mwareurl originale il 13 agosto 2012).
cite-note-1111. mwaru(mwarymwarcEN) mwargmwarkISO/IEC JTC1/SC22/WG13 Modula-2, su mwarosc22wg13.twi.tudelft.nl.

Bibliografia

• citeref-commodore-gazette-1Corso di programmazione in Modula 2 - La prima puntata di un corso che partendo da zero v'insegnerà a programmare con il linguaggio successore del Pascal (JPG), in Commodore Gazette, anno 7, n. 1, Milano, IHT, gennaio/marzo 1992, pp. 82-84, OCLC 955306596.
• citeref-commodore-gazette-2Corso di programmazione in Modula 2 - Seconda puntata: le tipologie di dati e listati d'esempio (JPG), in Commodore Gazette, anno 7, n. 2, Milano, IHT, aprile/maggio 1992, pp. 80-86, OCLC 955306596.
• citeref-commodore-gazette-3-4Corso di programmazione in Modula 2 - Terza puntata: i costrutti condizionali (JPG), in Commodore Gazette, anno 7, n. 3-4, Milano, IHT, giugno/luglio 1992, pp. 84-88, OCLC 955306596.
• citeref-commodore-gazette-5-6Corso di programmazione in Modula 2 - Quarta puntata: i sottoprogrammi di tipo funzionale e di tipo procedurale (JPG), in Commodore Gazette, anno 7, n. 5-6, Milano, IHT, agosto/settembre 1992, pp. 86-89, OCLC 955306596.
• citeref-commodore-gazette-7Corso di programmazione in Modula 2 - Quinta puntata: le regole di visibilità delle variabili (JPG), in Commodore Gazette, anno 7, n. 7, Milano, IHT, ottobre 1992, pp. 71-73, OCLC 955306596.
• citeref-commodore-gazette-9Corso di programmazione in Modula 2 - Sesta puntata: come gestire i dati grazie ai record e ai puntatori (JPG), in Commodore Gazette, anno 7, n. 9, Milano, IHT, dicembre 1992, pp. 70-74, OCLC 955306596.
• citeref-retro-computer-3Modula 2 - Storia, autore e influenze, in Retro Computer, n. 3, Cernusco sul Naviglio, Sprea, agosto/settembre 2024, pp. 70-73, ISSN 3034-8676.

Collegamenti esterni

• mwasc(EN) ADW Modula-2, su modula2.org.
• mwask(EN) Modula2, su modula2.net (archiviato dall'url originale il 10 agosto 2012).